﻿using UI.Base;
using UI.Login.Data;
using UI.Login.Panel;
using UI.Register;
using UI.Tip;

namespace UI.Login
{
    public class LoginPanel : BasePanel<LoginPanel>
    {
        public UIInput inputUserName;
        public UIInput inputPassWord;
        public UIButton btnLogin;
        public UIButton btnRegister;
        public UIToggle togRemember;
        public UIToggle togAutoLogin;
        public override void Init()
        {

            #region 处理控件 事件监听相关逻辑

            btnRegister.onClick.Add(new EventDelegate(() =>
                {
                    //点击注册做啥
                    //隐藏自己 显示 注册面板
                    HideMe();

                    //显示注册面板
                    RegisterPanel.Instance.ShowMe();
                })
            );
            btnLogin.onClick.Add(new EventDelegate(() =>
                {
                    //点击登录做啥
                    //判断 找好和密码 是否合法 
                    //合法 做什么
                    if (LoginMgr.Instance.CheckInfo(inputUserName.value, inputPassWord.value))
                    {
                        //记录用户名
                        LoginMgr.Instance.LoginData.userName = inputUserName.value;
                        LoginMgr.Instance.LoginData.passWord = inputPassWord.value;
                        LoginMgr.Instance.LoginData.rememberPW = togRemember.value;
                        LoginMgr.Instance.LoginData.autoLogin = togAutoLogin.value;
                        LoginMgr.Instance.SaveLoginData();

                        //隐藏自己 显示 服务器相关面板
                        //如果玩家之前选择过服务器 
                        //直接打开服务器面板
                        if (LoginMgr.Instance.LoginData.frontServerID == 0)
                        {
                            ChooseServerPanel.Instance.ShowMe();
                        }
                        //如果没有选择过服务器 那就打开服务器选择面板
                        else
                        {
                            ServerPanel.Instance.ShowMe();
                        }
                        HideMe();
                    }
                    //不合法做什么
                    else
                    {
                        TipPanel.Instance.ShowMe();
                        TipPanel.Instance.ChangeInfo("账号或密码错误");
                    }
                })
            );
            togRemember.onChange.Add(new EventDelegate(() =>
                {
                    //记住密码 单选框 选中未选中 状态变化 逻辑处理
                    //记录数据

                    //如果记住密码没有选中
                    if (!togRemember.value)
                    {
                        //强制让自动登录也没有选中
                        togAutoLogin.value = false;
                    }
                })
            );
            togAutoLogin.onChange.Add(new EventDelegate((() =>
            {
                //自动登录 单选框 选中未选中 状态变化 逻辑处理
                //记录数据
                //如果自动登录选中了 那么记住密码 应该强制选中
                if (togAutoLogin.value)
                {
                    togRemember.value = true;
                }
            })));

            #endregion


            #region 初始化面板显示的相关信息

            //更新登录面板相关的内容 我们需要数据来进行更新
            LoginData data = LoginMgr.Instance.LoginData;
            togRemember.value = data.rememberPW;
            togAutoLogin.value = data.autoLogin;
            //更新用户名
            if (data.userName != "")
                inputUserName.value = data.userName;
            //是否更新密码
            if (data.rememberPW)
            {
                inputPassWord.value = data.passWord;
            }
            //是否自动登录
            if( data.autoLogin )
            {
                //自动登录的逻辑
                //判断 找好和密码 是否合法 
                //合法 做什么
                if (LoginMgr.Instance.CheckInfo(inputUserName.value, inputPassWord.value))
                {
                    //隐藏自己 显示 服务器相关面板
                    //如果玩家之前选择过服务器 
                    //直接打开服务器面板
                    if (LoginMgr.Instance.LoginData.frontServerID == 0)
                    {
                        ServerPanel.Instance.ShowMe();
                    }
                    //如果没有选择过服务器 那就打开服务器选择面板
                    else
                    {
                        ChooseServerPanel.Instance.ShowMe();
                    }
                    HideMe();
                }
                //不合法做什么
                else
                {
                    TipPanel.Instance.ShowMe();
                    TipPanel.Instance.ChangeInfo("账号或密码错误");
                }
            }

            #endregion

        }
        //提供给外部使用的 快捷设置 登录面板 账号和密码的方法 主要提供个注册面板
        public void SetInfo(string userName, string passWord)
        {
            inputUserName.value = userName;
            inputPassWord.value = passWord;
        }
    }
}